Software defined networks (SDNs) decouple data and control planes. The data plane, which is also referred to as forwarding plane or user plane, is the part of the network that carries data packet (i.e., user packet) traffic. In contrast, the control plane in a network controls signaling traffic and routing.
In a forwarding element (e.g., a hardware switch or a hardware router), the data plane is the part of the architecture that decides what to do with the packets that arrive at the ingress interface. The data plane of a forwarding element is implemented by hardware and firmware while the control plane is implemented in software to provide for a more flexible management of network components from a central location.
Packet processing hardware in a forwarding element may use a match-action paradigm (e.g., that specified by the OpenFlow standard) for packet forwarding (e.g., switching, routing, etc.). In some hardware implementations of an OpenFlow switch, memories such as unit static random-access memory (SRAM) and ternary content-addressable memory (TCAM) are used to store the match and action data that defines the flow entries.
Memories may start degrading after deployment. Power surges, static electricity, excessive heat, manufacturing defects that may worsen during time are examples of the causes for memory degradation. Different techniques such as parity and error correcting code (ECC) are used to detect or correct memory errors.
Parity is an extra bit stored for each memory word to provide error detection. Every time memory is written, the parity is calculated and stored in the memory. Every time the TCAM is read, the parity is recomputed and compared with the stored parity. If there is a mismatch, there is an error. ECC adds additional bits to memory to provide redundant data such that the memory content can be recovered when a number of errors are introduced in the memory. For instance, a 2-bit ECC provides for correction of one faulty memory bit. Parity and ECC are, however, checked only when software does a read. Error detection using parity or ECC are software driven, which is a very slow operation.